//
//  StatusViewModel.swift
//  sinaWeiBo
//
//  Created by smartlei on 15/10/19.
//  Copyright © 2015年 smartlei. All rights reserved.
//

import UIKit

//该层模型主要处理根据User的数据直接加载成现成的图片
///// 用户UID
//var id: Int = 0
///// 用户昵称
//var screen_name: String?
///// 用户头像地址（中图），50×50像素
//var profile_image_url: String?
///// 认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
//var verified_type: Int = 0
///// 会员等级 0-6
//var mbrank: Int = 0
class StatusViewModel: CustomStringConvertible {
    
    var status: Status?
    
    // 用户头像URL
    var profile_image_url: NSURL? {
        
        return NSURL(string: status?.user?.avatar_hd ?? "")
    }
    //cell中配图 url连接列表
    /// 缩略图URL数组 - 存储型属性 !!!
    /// 如果是原创微博，可以有图，可以没有图
    /// 如果是转发微博，一定没有图，retweeted_status 中，可以有图，也可以没有图
    /// 一条微博，最多只有一个 pic_urls 数组
    var pic_urlsURL: [NSURL]?
    // 用户默认头像
    var userDefaultIconView: UIImage? {
        
        return UIImage(named: "avatar_default_big")
    }
    
    //用户会员图标mbrank
    var userMemberImage: UIImage? {
        
        switch status?.user?.verified_type ?? -1 {
        case 0 :return  UIImage(named: "avatar_vip")
        case 2 , 3 , 5 : return UIImage(named: "avatar_enterprise_vip")
        case 220 : return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    //用户认证图标
    var userVipImage: UIImage? {
        
        let mbrank = status?.user?.mbrank
        
        if mbrank > 0 && mbrank < 7 {
            
            return UIImage(named: "common_icon_membership_level\(mbrank!)")
        }
        return nil        
    }
    
    
    var cellID: String {
        
        return status?.retweeted_status != nil ?  statusRetweetedCellID : statusNormalCellID
    }
    //添加记录模型在cell显示内容引起的cell高度
   lazy var rowheight: CGFloat = {
        
        //1 创建一个临时cell
        var cell: StatusCell
    
        if self.status?.retweeted_status != nil {
             cell = StatusRetweetedCell(style: .Default, reuseIdentifier: statusRetweetedCellID)
            
        }
        else  {
             cell = StatusNormalCell(style: .Default, reuseIdentifier: statusNormalCellID)
           
        }
    
        return cell.rowHeight(self)
    
    
    }()
    
    //根据转发标志拼接转发内容
    //转发标志：转发也是一个User类型数据
    var retweetedText: String? {
        
        if let retweeted_status = status?.retweeted_status {
            
            return "@" + (retweeted_status.user?.screen_name ?? "") + (retweeted_status.text ?? "")
        }
        
        return nil
    }
    
    
    //实现自定义打印模型
     var description: String {
        return (status?.description)!
        
        
        
    }
    
    
    
    //使用用户数组模型初始化View模型
    init(status: Status){
        //保存
        self.status = status

      
        // 转化相关数据pic_urls
        if let pic_urls = status.retweeted_status?.pic_urls ?? status.pic_urls {
            
            //初始化缩略图url数组
            pic_urlsURL = [NSURL]()
            //字符串转URL
            for dict in pic_urls {
            
                let url = NSURL(string: dict["thumbnail_pic"]!)
               
                pic_urlsURL?.append(url!)
            }
        }
    }
}